package oo02;

public class Student {
    //类的属性 成员变量
    String name;
    int age;
    String address;
    //类的方法
    void study(){System.out.println(name+"在学习...");}
    void sayHi(){System.out.println(name+"今年"+age+"岁了");}
    //无参构造方法
    //构造方案: 类名称+参数列表+方法体
    Student(){System.out.println("我是无参构造方法");}
    //构造方法支持重载
    Student(String name1,int age1){
        name=name1;
        age=age1;
        System.out.println("大家好,我叫"+name+",今年"+age+"岁了");}
    //this指代当前对象
    //当局部变量(当前方法中)和成员变量同名时,this不能省略
    Student(int age,String name){
        this.name=name;
        this.age=age;
        System.out.println("大家好,我叫"+name+",今年"+age+"岁了");}
    //this. 方法名
     void diaoyong(){
        this.name=name;
        this.sayHi();//this.方法名() 指当前对象的方法;但是一般不这样用,因为方法没有重复的
         sayHi();
     }

    public static void main(String[] args) {
        //当我们new一个对象时,同时做两件事情:1.new 一个内存空间,存放对象数据
        // 2.执行相应的构造方法,给成员变量赋初值
        Student s1 = new Student();
        //
        Student s2 = new Student("王梅梅", 18);

        Student s3 = new Student(28, "李明");
        s2.sayHi();
        s3.sayHi();
        //编译错误,Student类中没有(int,int)参数列表的构造方法,
       /* Student S4 = new Student(18, 18);*/
    }
}
